﻿<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>One Framework - Your Data - Any Platform</title>
</head>
<body>
    <div style="margin:0px auto; width:100%;color:slategray;">
        <table id="content" style="font-size:12px; background-color:#fff; border:0px solid #d5d5d5; border-collapse:collapse; padding:0px; margin:0px; font-family:Segoe UI;">
            <tbody>
                <tr>
                    <td colspan="2" style="vertical-align:top; background-color:#f7f7f7; border-bottom:1px solid #d5d5d5; padding-left:8px;">
                        <table border="0" cellpadding="5">
                            <tbody>
                                <tr>
                                    <td>
                                        <img alt="Your GoodToCode Framework" src="wwwroot/images/welcome/GoodToCode-Logo-71x71-Transparent.png">
                                    </td>
                                    <td style="color:#6c6b6b; padding-left:0.8em;">
                                        <div style="font-size:2em;text-align:left;">GoodToCode Framework</div>
                                        <div style="font-size:1.25em;text-align:left;">One Framework - Your Data - Any Platform</div>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td style="vertical-align:top; padding:15px">
                        <div>
                            <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:0px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">Features &amp; Benefits</h3>
                            <p style="text-align:justify; line-height:18px">GoodToCode Framework helps you create your business-object framework with standard C# knowledge and minimal plumbing. Your objects can migrate full-stack, and be consumed in MVC, Web API, WPF, UWP and Xamarin iOS/Android. Works with your existing SQL tables, and allows you to incrementally build your reusable Framework one object, one page at a time.</p>
                        </div>
                        <div>
                            <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:0px; border-bottom:1px dotted #d5d5d5">Projects included in the GoodToCode Framework</h3>
                            <table>
                                <tr>
                                    <td style="vertical-align:top;">
                                        <ul style="line-height:18px">
                                            <li>
                                                <strong>GoodToCode.Entity.WebApp</strong> - <span style="text-align:justify; line-height:18px">MVC Web App project. Small starter MVC web app that creates, reads, updates and deletes your reusable Framework objects in this solution. </span>
                                            </li>
                                            <li>
                                                <strong>GoodToCode.Entity.WebServices</strong> - <span style="text-align:justify; line-height:18px">Web API Web Services project. Small starter web service that creates, reads, updates and deletes your reusable Framework objects in this solution. </span>
                                            </li>
                                            <li>
                                                <strong>GoodToCode.Entity.UniversalApp</strong> - <span style="text-align:justify; line-height:18px">UWP Universal App project. Small starter cross-platform app that creates, reads, updates and deletes your reusable Framework objects in this solution. </span>
                                            </li>
                                            <li>
                                                <strong>GoodToCode.Entity.DesktopApp</strong> - <span style="text-align:justify; line-height:18px">WPF Desktop App project. Small starter desktop native app that creates, reads, updates and deletes your reusable Framework objects in this solution. </span>
                                            </li>
                                            <li style="margin-top:3em;">
                                                <strong>GoodToCode.Entity.Models</strong> - <span style="text-align:justify; line-height:18px">Cross-Platform View Models project. Contains the Framework-level view models for http transport and .Serialize() built-in.</span>
                                            </li>
                                            <li>
                                                <strong>GoodToCode.Entity.Interop</strong> - <span style="text-align:justify; line-height:18px">Cross-Platform Interface project. All projects reference this project so that interfaces are enforced in all tiers, and on mobile device as well.</span>
                                            </li>
                                            <li style="margin-top:3em;">
                                                <strong>GoodToCode.Entity.DataAccess</strong> - <span style="text-align:justify; line-height:18px">Entity Framework (EF)/Data Access Object (DAO) project. Contains EF EDMX (database first), Data Access Objects, CRUDEntity, ModelEntity, EntityReader and EntityWriter.</span>
                                            </li>
                                            <li>
                                                <strong>GoodToCode.Entity.Database</strong> - <span style="text-align:justify; line-height:18px">SQL Server Data Tools (SSDT) project. Contains view/SP layer for the Framework.DataAccess to consume.</span>
                                            </li>
                                        </ul>
                                    </td>
                                    <td>
                                        <img style="width:30em;" alt="Your GoodToCode Framework" src="wwwroot/images/welcome/GoodToCode-Stack-Logical-Tiers-Full.png">
                                    </td>
                                </tr>
                            </table>
                        </div>
                        <table>
                            <tr>
                                <td style="vertical-align:top;">
                                    <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:0px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">What is the GoodToCode Framework?</h3>
                                    <p style="text-align:justify; line-height:18px;">The GoodToCode Framework is a full-stack C# business object framework. Your Customer object, for example, can exist as a:</p>
                                    <div style="text-align:justify;"><strong>Data object:</strong> EF-enabled to pull data from your SQL Server via common repository-pattern methods like: GetById(), GetAll(), Save() and Delete().</div>
                                    <div style="text-align:justify;padding-top:0.5em;"><strong>Domain object:</strong> Enriched domain object containing domain behavior such as IsEmployee, IsActive, HasRegistered, CurrentStatus, etc.</div>
                                    <div style="text-align:justify;padding-top:0.5em;"><strong>View Model object:</strong> Model for your screen Views that are thin, atomic and transportable. Can be extended to have view-specific properties such as a Gender select list, without altering your CustomerModel class.</div>
                                    <div style="text-align:justify;padding-top:0.5em;"><strong>Data-transfer object:</strong> Expose your object as a DTO for data-transfer specific operations such as inter-web-services data sharing or returning your object through public API endpoints.</div>
                                </td>
                                <td style="vertical-align:top;padding-left:2em;">
                                    <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:0px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">Why do you care?</h3>
                                    <p style="text-align:center;font-style:italic;">Fast Development = Fast Return on Investment</p>
                                    <p style="text-align:justify;"><strong>Full-stack projects in seconds:</strong> Your entire C# stack solution is up in seconds, ready for you to add your business objects. From Visual Studio: File -> New -> Project, select GoodToCode Quick-Start, and your stack framework is runnable and ready to code.</p>
                                    <p style="text-align:justify;"><strong>Cross-platform by default:</strong> Enable your business-objects to run truly everywhere: In web apps - In any mobile app - In desktop native apps - As middle-tier domain service - As Public API web services - even in client-side TypeScript.</p>
                                    <p style="text-align:justify;"><strong>Full-stack by default:</strong> Other frameworks focus only on the UI, only in the web, only for data access. GoodToCode Framework includes Database projects (SSDT), Middle Tier projects (.NET Standard) and projects for all major apps (MVC, Web API, UWP, WPF.)</p>
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td style="vertical-align:top; padding:15px; border-left:1px solid #d5d5d5; width:30%">
                        <div>
                            <h3 style="text-align:center; color:red; font-weight:bold; margin-bottom:15px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">Critical Next Steps</h3>
                            <div style="text-align:left;color:red;">
                                <div>&#x2776; Install .NET Core SDK <a href="https://www.microsoft.com/net/download" target="_blank">[download]</a></div>
                                <div>&#x2777; Update Visual Studio <a href="https://docs.microsoft.com/en-us/visualstudio/install/update-visual-studio?view=vs-2017" target="_blank">[download]</a></div>
                                <div>&#x2778; Build solution to verify .NET Core</div>
                            </div>
                        </div>
                        <div>
                            <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:15px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">Developer Next Steps</h3>
                            <div>&#x2776; Right-click -> Set as Startup Project </div>
                            <div>&#x2777; Press F5 to run debugger</div>
                            <div>&#x2778; Click Search to lookup a customer</div>
                        </div>
                        <div>
                            <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:15px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">Frequently Asked Questions</h3>
                            <strong>Where is the DB connection string?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>Open \App_Data\ConnectionStrings.json</li>
                                <li>Change <i>DefaultConnection</i> to match your DB</li>
                            </ol>
                            <strong>Where is the Web Service Url?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>Open \App_Data\AppSettings.json</li>
                                <li>Change <i>MyWebService</i> to match your Url</li>
                            </ol>
                            <strong>How to read from my database?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>Open Framework.Database\CustomerCode\Views\CustomerInfo.sql</li>
                                <li>Change this view to join to your "Person" table</li>
                            </ol>
                            <strong>How to write to my database?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>Open Framework.Database\CustomerCode\Stored Procedures\CustomerInsert.sql</li>
                                <li>Change this SP to insert to your "Person" table</li>
                            </ol>
                            <strong>How to publish the database?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>Open Framework.Database\Publish\PublishToDev.publish.xml (Ensure database connection is correct)</li>
                                <li>Click Generate Script and review</li>
                                <li>Click Publish to push changes to SQL</li>
                            </ol>
                            <strong>How to publish to a web server?</strong>
                            <ol style="padding-left:1.5em;padding-top:0;margin-top:0;">
                                <li>In Solution Explorer, right-click GoodToCode.Entity.WebApp</li>
                                <li>Click Publish, the Publish window will display</li>
                                <li>Click the <i>Settings...</i> link in the Publish window</li>
                                <li>Change Target Location to the dev web site folder path, click Save</li>
                                <li>Click Publish to publish the project to your development web server</li>
                            </ol>
                        </div>
                        <div style="padding-left:1.5em;">
                            <h3 style="color:#6c6b6b;text-align:center; font-weight:bold; margin-bottom:15px; border-bottom:1px dotted #d5d5d5; padding-bottom:5px">More information</h3>
                            <table>
                                <tr>
                                    <td><a href="https://docs.GoodToCode.com/products/GoodToCode-framework/GoodToCode-framework-ebook.pdf" target="_blank">[PDF]</a></td>
                                    <td><a href="https://docs.GoodToCode.com/products/GoodToCode-framework/GoodToCode-framework-ebook.pdf" target="_blank">GoodToCode Framework eBook</a></td>
                                </tr>
                                <tr>
                                    <td><a href="https://docs.GoodToCode.com/reference/GoodToCode-framework" target="_blank">[API]</a></td>
                                    <td><a href="https://docs.GoodToCode.com/reference/GoodToCode-framework" target="_blank">GoodToCode Framework Reference</a></td>
                                </tr>
                                <tr>
                                    <td><a href="https://docs.GoodToCode.com" target="_blank">[Docs]</a></td>
                                    <td><a href="https://docs.GoodToCode.com" target="_blank">docs.GoodToCode.com</a></td>
                                </tr>
                                <tr>
                                    <td><a href="https://github.com/GoodToCode/Framework/issues/new" target="_blank">[+/-]</a></td>
                                    <td><a href="https://github.com/GoodToCode/Framework/issues/new" target="_blank">Report an Issue</a></td>
                                </tr>
                                <tr>
                                    <td><a href="https://cloud.GoodToCode.com/GoodToCode-framework" target="_blank">[Zip]</a></td>
                                    <td><a href="https://cloud.GoodToCode.com/GoodToCode-framework" target="_blank">Download GoodToCode Framework</a></td>
                                </tr>
                                <tr>
                                    <td><a href="https://www.microsoft.com/net/download" target="_blank">[Azure]</a></td>
                                    <td><a href="https://www.microsoft.com/net/download" target="_blank">Cloud Web Environment</a></td>
                                </tr>
                            </table>
                        </div>
                    </td>
                </tr>
                <tr>
                    <td colspan="2" style=" background-color:#f7f7f7; border-top:1px solid #d5d5d5;">
                        <div style="vertical-align:top; padding-top:15px; padding-bottom:15px; padding-left:15px; padding-right:40px; text-align:center;">
                            <div style="font-weight:bold;font-size:1.6em;"><span style="color:#0C60C6;font-variant: small-caps;">GoodToCode</span><span style="color:#5a5a5a;font-variant: small-caps;">SOURCE</span></div>
                            <div>22431 Antonio, Suite B160-843</div>
                            <div>Rancho Santa Margarita, CA 92688</div>
                            <div>+1 949.544.1900</div>
                            <div><a href="http://www.GoodToCode.com">GoodToCode.com</a> | <a href="http://www.twitter.com/GoodToCode">@GoodToCode</a></div>
                            <div style="padding-top:1em;">
                                <a href="http://www.twitter.com/GoodToCode"><img alt="http://twitter.com/GoodToCode" src="wwwroot/Images/welcome/social-twitter.png"></a>
                                <a href="http://www.facebook.com/GoodToCode"><img alt="http://facebook.com/GoodToCode" src="wwwroot/Images/welcome/social-facebook.png"></a>
                                <a href="http://www.GoodToCode.com/news/rss/1"><img alt="http://www.GoodToCode.com/news/rss/1" src="wwwroot/Images/welcome/social-rss.png"></a>
                            </div>
                        </div>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</body>
</html>

